import {
    createStore, // 创建仓库
    applyMiddleware // 整合redux中间件
} from 'redux'
import thunk from 'redux-thunk'
import { StoreStateType } from '../interface'
// 添加thunk的话 可以允许dispatch 接收一个方法或者对象 在方法中可以用来做异步，方法默认接收一个dispatch 接收的dispatch是真正的dispatch
// 没有 添加thunk dispatch 方法 只允许我们接收一个对象，对象中必须要有一个参数  tyoe

// 纯函数  没有异步
// reducer: 更改state的唯一方式
// dispatch： 用来触发reducer
// action：dispatch 触发reducer时传来的参数 参数类型 为对象
//     参数1：type：必传  类型 字符串
const reducer = (state:StoreStateType = initState, action: any) => {
    const { type } = action;

    // 更改用户信息
    if (type === 'CHANGE_USER_INFO') {
        return {
            ...state,
            userInfo: action.data
        }
    }

    // 更改列表
    if(type === 'CHANGE_LIST') {
        return {
            ...state,
            list: action.data
        }
    }


    return state
}

const initState = {
    userInfo: {},
    list: []
}



const store = createStore(reducer,applyMiddleware(thunk))

export default store